package com.dk.testflow;

import com.dk.domain.ApiAutoTestEntity;
import com.dk.exception.ExcelDataException;
import com.dk.util.log.Log;
import lombok.Data;

/**
 * 接口自动化测试责任链
 */
public abstract class ApiAutoTestChain {
    //接口自动化测试环节
    private ApiAutoTestChain testLink;

    /**
     * 设置测试下一级测试链
     * @param testLink 下一级测试链对象
     */
    public void setTestLink(ApiAutoTestChain testLink){
        this.testLink = testLink;
    }

    /**
     * 获取当前测试链对象
     * @return 测试链对象
     */
    public ApiAutoTestChain getTestLink(){
        return testLink;
    }

    /**
     * 执行完整测试链
     * @param apiAutoTestEntity
     */
    public ApiAutoTestEntity startExecute(ApiAutoTestEntity apiAutoTestEntity) throws ExcelDataException {
        executeTestChain(apiAutoTestEntity);
        if(this.testLink != null) {
            this.testLink.startExecute(apiAutoTestEntity);
        }else {
            Log.info("---【执行用例】:用例编号:"+apiAutoTestEntity.getCaseNum()+";用例名称:"+apiAutoTestEntity.getCaseName()+"-执行测试结束");
            Log.addLogInReport(apiAutoTestEntity);
            if(apiAutoTestEntity.getAssertResult()){
                assert true;
            }else{
                assert false;
            }
        }
        return apiAutoTestEntity;
    }

    public abstract void executeTestChain(ApiAutoTestEntity apiAutoTestEntity) throws ExcelDataException;

}
